# -*- coding: utf-8 -*-
from legendaryPowerScript._lpcommon import apiUtilfrom legendaryPowerScript.commands.LpCommand import LpCommandimport datetimeclass ActivityType:
    """
    活动类型类，用于定义和管理特定活动的属性和行为，如显示名称、界面路径、组件配置等。
    """

    def __init__(self, name, config):
        """
        初始化活动类型实例。

        Args:
            name (str): 活动的唯一名称。
            config (dict): 活动配置的字典，包含显示名、界面路径、组件配置等。

        Attributes:
            displayName (str): 活动的显示名称。
            isNewScript (str): 判断活动是否有“新”标记的脚本。
            config (dict): 活动的具体配置。
            componentConfigs (dict): 活动界面的组件配置字典。
            uiPath (str): 活动界面的路径。
            othersList (list): 其他活动的列表。
            jumpTo (str): 跳转到的活动名称。
            background (str): 活动界面的背景图路径。
            icon (str): 活动的小图标路径。
            displayModifier (list): 活动的显示条件修饰符列表。
        """
        self.displayName = ""  # type: str
        self.isNewScript = ""  # type: str
        self.config = {}  # type: dict
        self.componentConfigs = {}  # type: dict
        self.uiPath = ""  # type: str
        self.othersList = []  # type: list
        self.jumpTo = ""  # type: str
        self.background = ""  # type: str
        self.icon = ""  # type: str
        self.displayModifier = []  # type: list
        pass

    def shouldAppear(self, creature):
        # type: (creature) -> bool
        """
        判断活动是否应该对指定生物可见。

        Args:
            creature: 参与活动的生物对象。

        Returns:
            bool: 如果活动应该显示，则返回True，否则返回False。
        """
        pass

    def isNew(self, creature):
        # type: (creature) -> bool
        """
        判断活动是否有“新”标记。

        Args:
            creature: 参与活动的生物对象。

        Returns:
            bool: 如果活动有“新”标记，则返回True，否则返回False。
        """
        pass

    def build(self, creature):
        # type: (creature) -> ActivityUI
        """
        构建活动的用户界面实例。

        Args:
            creature: 参与活动的生物对象。

        Returns:
            ActivityUI: 活动的用户界面实例。
        """
        pass

class ComponentType:
    """
    组件类型类，用于定义活动界面中组件的属性和行为，如类型、创建脚本、点击脚本等。
    """

    def __init__(self, ui, path, config):
        """
        初始化组件类型实例。

        Args:
            ui (ActivityType): 组件所属的活动类型实例。
            path (str): 组件在活动界面中的路径。
            config (dict): 组件的配置字典，包含类型、创建脚本、点击脚本等。

        Attributes:
            type (str): 组件的类型。
            createScript (str): 组件创建时执行的脚本。
            printClickMessage (bool): 是否打印点击信息。
            clickScript (str): 组件被点击时执行的脚本。
            clickCommands (str): 组件被点击时执行的指令。
            reopen (bool): 是否在点击后重新打开界面。
            subComponentConfig (dict): 子控件的配置。
            percent (str): 组件的百分比值。
            text (str): 组件的文本内容。
            texture (str): 组件的贴图路径。
            alwaysActiveAnim (bool): 是否总是显示动画。
            hoveringText (list): 组件悬浮时的文本信息。
            listContent (str): 列表组件的内容。
            listParam (dict): 列表组件的初始参数。
            displayModifier (list): 组件的显示条件修饰符列表。
        """
        self.type = ""  # type: str
        self.createScript = ""  # type: str
        self.printClickMessage = False  # type: bool
        self.clickScript = ""  # type: str
        self.clickCommands = ""  # type: str
        self.reopen = False  # type: bool
        self.subComponentConfig = {}  # type: dict
        self.percent = ""  # type: str
        self.text = ""  # type: str
        self.texture = ""  # type: str
        self.alwaysActiveAnim = False  # type: bool
        self.hoveringText = []  # type: list
        self.listContent = ""  # type: str
        self.listParam = {}  # type: dict
        self.displayModifier = []  # type: list
        pass

    def shouldAppear(self, creature):
        # type: (creature) -> bool
        """
        判断组件是否应该对指定生物可见。

        Args:
            creature: 参与活动的生物对象。

        Returns:
            bool: 如果组件应该显示，则返回True，否则返回False。
        """
        pass

    def init(self):
        # type: () -> None
        """
        初始化组件类型，处理列表内容和子组件配置。
        """
        pass

    def getTypeHint(self):
        # type: () -> str
        """
        根据配置中的中文类型名。返回用于客户端的英文类型名

        Returns:
            str: 组件类型的提示字符串。
        """

        type = self.type
        if type == "列表":
            return "List"
        elif type == "开关":
            return "Toggle"
        elif type == "选择数值":
            return "SelectAmount"
        elif type == "面板":
            return "Base"
        elif type == "图片":
            return "Image"
        elif type == "按钮":
            return "Button"
        elif type == "物品":
            return "Item"
        elif type == "进度条":
            return "Progressbar"
        elif type == "文本" or type == "标签" or type == "文字":
            return "Label"
        else:
            return None